/*
 * @Author: new-wang
 * @Date: 2025-08-28 10:28:23
 * @LastEditors: new-wang
 * @LastEditTime: 2025-09-03 14:24:37
 * @FilePath: \nest-demo\src\common\utils\index.ts
 * @Description: 公共方法
 */
import { v4 as uuidv4 } from 'uuid'
import * as Lodash from 'lodash'
import dayjs from 'dayjs'
// IsLeapYear 增加了 .isLeapYear API 返回一个 boolean 来展示一个 Day.js 对象的年份是不是闰年
import isLeapYear from 'dayjs/plugin/isLeapYear' // 导入插件
import timezone from 'dayjs/plugin/timezone' // 导入插件
import utc from 'dayjs/plugin/utc' // 导入插件
import 'dayjs/locale/zh-cn' // 导入本地化语言
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(isLeapYear) // 使用插件
dayjs.locale('zh-cn') // 使用本地化语言
dayjs.tz.setDefault('Asia/Beijing')

/**
 * 数组去重
 * @param list 数组
 * @returns
 */
export function Uniq<T extends number | string>(list: Array<T>): Array<T> {
  return Lodash.uniq(list)
}

/**
 * 获取当前时间
 * YYYY-MM-DD HH:mm:ss
 * @returns
 */
export function GetNowDate() {
  return dayjs().format('YYYY-MM-DD HH:mm:ss')
}

/**
 * uuid生成器
 * @returns 生成一个不带连字符的UUID字符串
 */
export function GenerateUUID(): string {
  const uuid = uuidv4()
  return uuid.replaceAll('-', '')
}

/**
 * 辅助方法：验证是否为邮箱
 * @param val
 * @returns
 */
export function isEmail(val: string): boolean {
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
  return emailRegex.test(val)
}

/**
 * 辅助方法：验证是否为手机号
 * @param val
 * @returns
 */
export function isPhoneNumber(val: string): boolean {
  const phoneRegex = /^1[3-9]\d{9}$/ // 简单的中国手机号验证
  return phoneRegex.test(val)
}
